package com.uzai.console.vo.wechatprivate.devicewechatinfo;

import com.uzai.common.dto.device.DeviceInfoMobileWeChatCacheDto;
import com.uzai.common.enums.RedisCacheKeyEnum;
import com.uzai.console.dto.wechatprivate.devicewechatinfo.BanTransferDto;
import com.uzai.console.entity.DeviceAuthDetail;
import com.uzai.console.vo.alarm.alarmrule.AlarmRuleInfoVo;
import com.uzai.console.vo.deviceauth.DeviceAuthVo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.models.auth.In;

import java.util.List;

/**
 * @author liuqi
 * @date 2021年08月31日 15:17
 */
@ApiModel("个人微信机器人返回信息")
public class DeviceWechatInfoVo {
    @ApiModelProperty("机器人id")
    private Long id;
    @ApiModelProperty("机器人wxid")
    private String deviceId;
    @ApiModelProperty("机器人昵称")
    private String deviceName;
    @ApiModelProperty("机器人备注")
    private String deviceRemark;
    @ApiModelProperty("机器人头像")
    private String headImgUrl;
    @ApiModelProperty("机器人分组id")
    private Long groupId;
    @ApiModelProperty("机器人分组名称")
    private String groupName;
    @ApiModelProperty("用户组id")
    private Long userGroupId;
    @ApiModelProperty("用户组名称")
    private String userGroupName;
    @ApiModelProperty("配置方案ID")
    private Long configId;
    @ApiModelProperty("配置方案名称")
    private String configName;
    @ApiModelProperty("PC客户端版本")
    private String pcClientVersion;
    @ApiModelProperty("PC客户端版本是否有更新(0-无更新；1-有更新；2-更新中; 3-更新失败")
    private Integer updatePcClientVersion;
    @ApiModelProperty("手机端客户端版本")
    private String mobileClientVersion;
    @ApiModelProperty("移动端客户端版本是否有更新(0-无；1-有")
    private Integer updateMobileClientVersion;
    @ApiModelProperty("移动端微信版本")
    private String mobileWxVersion;
    @ApiModelProperty("PC端微信版本")
    private String pcWxVersion;
    @ApiModelProperty("PC端软件是否到期（0-未到期；1-已到期）")
    private Integer pcExpireStatus;
    @ApiModelProperty("手机端软件是否到期（0-未到期；1-已到期）")
    private Integer mobileExpireStatus;
    @ApiModelProperty("PC在线状态（0-离线；1-在线）")
    private Integer pcOnLine;
    @ApiModelProperty("PC端是否处理消息（0-不处理；1-处理）")
    private Integer pcMsgHandler;
    @ApiModelProperty("手机在线状态（0-离线；1-在线）")
    private Integer mobileOnLine;
    @ApiModelProperty("移动端是否处理消息（0-不处理；1-处理）")
    private Integer mobileMsgHandler;
    @ApiModelProperty("手机端剩余电量百分比")
    private Integer batteryLevel;
    @ApiModelProperty("手机端外部存储（sdcard）剩余空间(单位:MB)")
    private Double sdCardFree;
    /**
     * 客户端所在的服务器系统版本
     */
    @ApiModelProperty("操作系统版本")
    private String sysVersion;
    /**
     * 系统CPU使用率
     */
    @ApiModelProperty("电脑端系统CPU使用率（百分比）")
    private Integer sysCpuUse;
    /**
     * 电脑端系统内存使用率
     */
    @ApiModelProperty("电脑端系统内存使用率（百分比）")
    private Integer sysMemUse;

    /**
     * 电脑端硬盘总空间（单位：字节）
     */
    @ApiModelProperty("电脑端硬盘总空间（单位：MB）")
    private Double diskTotal;

    /**
     * 电脑端硬盘可使用的空间（单位：字节）
     */
    @ApiModelProperty("电脑端硬盘可使用的空间（单位：MB）")
    private Double diskFree;

    /**
     * 电脑端软件CPU和内存使用率的json
     */
    @ApiModelProperty("电脑端软件CPU和内存使用率的json")
    private String client;
    /**
     * 电脑端软件CPU使用率（百分比）
     */
    @ApiModelProperty("电脑端软件CPU使用率（百分比）")
    private Double clientCpu;
    /**
     * 电脑端软件CPU和内存使用率的json
     */
    @ApiModelProperty("电脑端软件内存使用率（百分比）")
    private Double clientMemory;

    /**
     * 当前微信CPU和内存使用率的json
     */
    @ApiModelProperty("电脑端微信CPU和内存使用率的json")
    private String wechat;
    /**
     * 客户CPU使用率（百分比）
     */
    @ApiModelProperty("电脑端微信CPU使用率（百分比）")
    private Double wechatCpu;
    /**
     * 客户端CPU和内存使用率的json
     */
    @ApiModelProperty("电脑端微信内存使用率（百分比）")
    private Double wechatMemory;

    //设备监控时使用
    @ApiModelProperty("报警规则id")
    private Long alarmRuleId;
    //设备监控时使用
    @ApiModelProperty("报警规则对象")
    private AlarmRuleInfoVo alarmRuleInfoVo;

    //是否购买PC端
    @ApiModelProperty("PC端是否授权(0-未授权；1-已授权)")
    private Integer pcDeviceAuthStatus;
    //是否购买移动端
    @ApiModelProperty("移动端是否授权(0-未授权；1-已授权)")
    private Integer mobileDeviceAuthStatus;

    //pc产品功能授权列表
    @ApiModelProperty("PC端产品功能授权列表")
    private List<DeviceAuthVo> pcDeviceAuthVoList;

    //移动端产品功能授权列表
    @ApiModelProperty("移动端端产品功能授权列表")
    private List<DeviceAuthVo> mobileDeviceAuthVoList;

    //产品功能授权列表
    @ApiModelProperty("产品功能授权列表")
    private List<DeviceAuthVo> deviceAuthVoList;

    //手机端封号名片转发信息
    @ApiModelProperty("是否封号(0-未封；1-已封)")
    private Integer banFlag;
    @ApiModelProperty("名片转发机器人唯一编号")
    private Long transferDevcieUniqueId;
    @ApiModelProperty("被转发微信信息列表")
    private List<DeviceInfoMobileWeChatCacheDto.TransferInfo> transferInfoList;

    //是否可以转移授权时间
    @ApiModelProperty("是否可以转移授权时间(0-不能转移；1-可以转移)")
    private Integer transferAuthTimeFlag;

    @ApiModelProperty("是否自动迁移 （0否，1是）")
    private Integer autoReplace;

    @ApiModelProperty("工作状态（0：电脑，1手机）")
    private Integer recvmsgType;

    @ApiModelProperty("配置方案启用规则（0-用户默认客户端；1-用户当前使用客户端）")
    private int configRule;

    /**
     * 更新微信通讯录时间
     */
    @ApiModelProperty("更新微信通讯录时间")
    private int refreshWxcontactsTime;

    /**
     * 手机号
     */
    @ApiModelProperty("手机号")
    private String  mobile;

    /**
     * 手机号类型(0：电信，1：移动， 2：联通)
     */
    @ApiModelProperty("手机号类型(0：电信，1：移动， 2：联通)")
    private Integer mobiletype;

    /**
     * 话费余额
     */
    @ApiModelProperty("话费余额")
    private Double phonebal;

    /**
     * 更新微信通讯录时间
     */
    @ApiModelProperty("最新发送时间")
    private Integer sendTime;

    /**
     * 最后登录的IP地址
     */
    @ApiModelProperty("最后登录的IP地址")
    private String lastLoginIpAddress;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getDeviceId() {
        return deviceId;
    }

    public void setDeviceId(String deviceId) {
        this.deviceId = deviceId;
    }

    public String getDeviceName() {
        return deviceName;
    }

    public void setDeviceName(String deviceName) {
        this.deviceName = deviceName;
    }

    public String getDeviceRemark() {
        return deviceRemark;
    }

    public void setDeviceRemark(String deviceRemark) {
        this.deviceRemark = deviceRemark;
    }

    public String getHeadImgUrl() {
        return headImgUrl;
    }

    public void setHeadImgUrl(String headImgUrl) {
        this.headImgUrl = headImgUrl;
    }

    public Long getGroupId() {
        return groupId;
    }

    public void setGroupId(Long groupId) {
        this.groupId = groupId;
    }

    public String getGroupName() {
        return groupName;
    }

    public void setGroupName(String groupName) {
        this.groupName = groupName;
    }

    public Long getUserGroupId() {
        return userGroupId;
    }

    public void setUserGroupId(Long userGroupId) {
        this.userGroupId = userGroupId;
    }

    public String getUserGroupName() {
        return userGroupName;
    }

    public void setUserGroupName(String userGroupName) {
        this.userGroupName = userGroupName;
    }

    public Long getConfigId() {
        return configId;
    }

    public void setConfigId(Long configId) {
        this.configId = configId;
    }

    public String getConfigName() {
        return configName;
    }

    public void setConfigName(String configName) {
        this.configName = configName;
    }

    public String getPcClientVersion() {
        return pcClientVersion;
    }

    public void setPcClientVersion(String pcClientVersion) {
        this.pcClientVersion = pcClientVersion;
    }

    public Integer getUpdatePcClientVersion() {
        return updatePcClientVersion;
    }

    public void setUpdatePcClientVersion(Integer updatePcClientVersion) {
        this.updatePcClientVersion = updatePcClientVersion;
    }

    public String getMobileClientVersion() {
        return mobileClientVersion;
    }

    public void setMobileClientVersion(String mobileClientVersion) {
        this.mobileClientVersion = mobileClientVersion;
    }

    public Integer getUpdateMobileClientVersion() {
        return updateMobileClientVersion;
    }

    public void setUpdateMobileClientVersion(Integer updateMobileClientVersion) {
        this.updateMobileClientVersion = updateMobileClientVersion;
    }

    public Integer getPcOnLine() {
        return pcOnLine;
    }

    public void setPcOnLine(Integer pcOnLine) {
        this.pcOnLine = pcOnLine;
    }

    public Integer getMobileOnLine() {
        return mobileOnLine;
    }

    public void setMobileOnLine(Integer mobileOnLine) {
        this.mobileOnLine = mobileOnLine;
    }

    public Integer getPcMsgHandler() {
        return pcMsgHandler;
    }

    public void setPcMsgHandler(Integer pcMsgHandler) {
        this.pcMsgHandler = pcMsgHandler;
    }

    public Integer getMobileMsgHandler() {
        return mobileMsgHandler;
    }

    public void setMobileMsgHandler(Integer mobileMsgHandler) {
        this.mobileMsgHandler = mobileMsgHandler;
    }

    public Integer getBatteryLevel() {
        return batteryLevel;
    }

    public void setBatteryLevel(Integer batteryLevel) {
        this.batteryLevel = batteryLevel;
    }

    public Double getSdCardFree() {
        return sdCardFree;
    }

    public void setSdCardFree(Double sdCardFree) {
        this.sdCardFree = sdCardFree;
    }

    public String getSysVersion() {
        return sysVersion;
    }

    public void setSysVersion(String sysVersion) {
        this.sysVersion = sysVersion;
    }

    public Integer getSysCpuUse() {
        return sysCpuUse;
    }

    public void setSysCpuUse(Integer sysCpuUse) {
        this.sysCpuUse = sysCpuUse;
    }

    public Integer getSysMemUse() {
        return sysMemUse;
    }

    public void setSysMemUse(Integer sysMemUse) {
        this.sysMemUse = sysMemUse;
    }

    public Double getDiskTotal() {
        return diskTotal;
    }

    public void setDiskTotal(Double diskTotal) {
        this.diskTotal = diskTotal;
    }

    public Double getDiskFree() {
        return diskFree;
    }

    public void setDiskFree(Double diskFree) {
        this.diskFree = diskFree;
    }

    public String getClient() {
        return client;
    }

    public void setClient(String client) {
        this.client = client;
    }

    public Double getClientCpu() {
        return clientCpu;
    }

    public void setClientCpu(Double clientCpu) {
        this.clientCpu = clientCpu;
    }

    public Double getClientMemory() {
        return clientMemory;
    }

    public void setClientMemory(Double clientMemory) {
        this.clientMemory = clientMemory;
    }

    public String getWechat() {
        return wechat;
    }

    public void setWechat(String wechat) {
        this.wechat = wechat;
    }

    public Double getWechatCpu() {
        return wechatCpu;
    }

    public void setWechatCpu(Double wechatCpu) {
        this.wechatCpu = wechatCpu;
    }

    public Double getWechatMemory() {
        return wechatMemory;
    }

    public void setWechatMemory(Double wechatMemory) {
        this.wechatMemory = wechatMemory;
    }

    public Long getAlarmRuleId() {
        return alarmRuleId;
    }

    public void setAlarmRuleId(Long alarmRuleId) {
        this.alarmRuleId = alarmRuleId;
    }

    public AlarmRuleInfoVo getAlarmRuleInfoVo() {
        return alarmRuleInfoVo;
    }

    public void setAlarmRuleInfoVo(AlarmRuleInfoVo alarmRuleInfoVo) {
        this.alarmRuleInfoVo = alarmRuleInfoVo;
    }

    public String getMobileWxVersion() {
        return mobileWxVersion;
    }

    public void setMobileWxVersion(String mobileWxVersion) {
        this.mobileWxVersion = mobileWxVersion;
    }

    public String getPcWxVersion() {
        return pcWxVersion;
    }

    public void setPcWxVersion(String pcWxVersion) {
        this.pcWxVersion = pcWxVersion;
    }

    public Integer getPcDeviceAuthStatus() {
        return pcDeviceAuthStatus;
    }

    public void setPcDeviceAuthStatus(Integer pcDeviceAuthStatus) {
        this.pcDeviceAuthStatus = pcDeviceAuthStatus;
    }

    public Integer getMobileDeviceAuthStatus() {
        return mobileDeviceAuthStatus;
    }

    public void setMobileDeviceAuthStatus(Integer mobileDeviceAuthStatus) {
        this.mobileDeviceAuthStatus = mobileDeviceAuthStatus;
    }

    public Integer getPcExpireStatus() {
        return pcExpireStatus;
    }

    public void setPcExpireStatus(Integer pcExpireStatus) {
        this.pcExpireStatus = pcExpireStatus;
    }

    public Integer getMobileExpireStatus() {
        return mobileExpireStatus;
    }

    public void setMobileExpireStatus(Integer mobileExpireStatus) {
        this.mobileExpireStatus = mobileExpireStatus;
    }

    public Integer getBanFlag() {
        return banFlag;
    }

    public void setBanFlag(Integer banFlag) {
        this.banFlag = banFlag;
    }

    public Long getTransferDevcieUniqueId() {
        return transferDevcieUniqueId;
    }

    public void setTransferDevcieUniqueId(Long transferDevcieUniqueId) {
        this.transferDevcieUniqueId = transferDevcieUniqueId;
    }

    public List<DeviceInfoMobileWeChatCacheDto.TransferInfo> getTransferInfoList() {
        return transferInfoList;
    }

    public void setTransferInfoList(List<DeviceInfoMobileWeChatCacheDto.TransferInfo> transferInfoList) {
        this.transferInfoList = transferInfoList;
    }

    public Integer getTransferAuthTimeFlag() {
        if(transferAuthTimeFlag == null){
            transferAuthTimeFlag = 0;
        }
        return transferAuthTimeFlag;
    }

    public void setTransferAuthTimeFlag(Integer transferAuthTimeFlag) {
        this.transferAuthTimeFlag = transferAuthTimeFlag;
    }

    public List<DeviceAuthVo> getDeviceAuthVoList() {
        return deviceAuthVoList;
    }

    public void setDeviceAuthVoList(List<DeviceAuthVo> deviceAuthVoList) {
        this.deviceAuthVoList = deviceAuthVoList;
    }

    public List<DeviceAuthVo> getPcDeviceAuthVoList() {
        return pcDeviceAuthVoList;
    }

    public void setPcDeviceAuthVoList(List<DeviceAuthVo> pcDeviceAuthVoList) {
        this.pcDeviceAuthVoList = pcDeviceAuthVoList;
    }

    public List<DeviceAuthVo> getMobileDeviceAuthVoList() {
        return mobileDeviceAuthVoList;
    }

    public void setMobileDeviceAuthVoList(List<DeviceAuthVo> mobileDeviceAuthVoList) {
        this.mobileDeviceAuthVoList = mobileDeviceAuthVoList;
    }

    public Integer getAutoReplace() {
        if(autoReplace == null){
            autoReplace = 0; //默认不自动迁移
        }
        return autoReplace;
    }

    public void setAutoReplace(Integer autoReplace) {
        this.autoReplace = autoReplace;
    }

    public Integer getRecvmsgType() {
        return recvmsgType;
    }

    public void setRecvmsgType(Integer recvmsgType) {
        this.recvmsgType = recvmsgType;
    }

    public int getConfigRule() {
        return configRule;
    }

    public void setConfigRule(int configRule) {
        this.configRule = configRule;
    }

    public int getRefreshWxcontactsTime() {
        return refreshWxcontactsTime;
    }

    public void setRefreshWxcontactsTime(int refreshWxcontactsTime) {
        this.refreshWxcontactsTime = refreshWxcontactsTime;
    }

    public String getMobile() {
        return mobile;
    }

    public void setMobile(String mobile) {
        this.mobile = mobile;
    }

    public Integer getMobiletype() {
        return mobiletype;
    }

    public void setMobiletype(Integer mobiletype) {
        this.mobiletype = mobiletype;
    }

    public Double getPhonebal() {
        return phonebal;
    }

    public void setPhonebal(Double phonebal) {
        this.phonebal = phonebal;
    }

    public Integer getSendTime() {
        return sendTime;
    }

    public void setSendTime(Integer sendTime) {
        this.sendTime = sendTime;
    }


    public String getLastLoginIpAddress() {
        return lastLoginIpAddress;
    }

    public void setLastLoginIpAddress(String lastLoginIpAddress) {
        this.lastLoginIpAddress = lastLoginIpAddress;
    }
}
